package com.funo.business.service.impl;

import java.util.UUID;

import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;

import com.funo.business.dao.CompanyDao;
import com.funo.business.dao.TemplateDao;
import com.funo.business.dao.impl.CompanyDaoImpl;
import com.funo.business.entities.Company;
import com.funo.business.entities.TemplateItem;
import com.funo.business.service.TemplateService;
import com.funo.common.pojo.PageResult;
import com.funo.common.pojo.QueryCondition;
import com.funo.common.utils.Constant;
import com.funo.core.base.BaseService;
import com.funo.main.dao.UserDao;
import com.funo.main.entities.User;
import com.sun.swing.internal.plaf.metal.resources.metal;

@Service("templateService")
public class TemplateServieImpl extends BaseService implements TemplateService{
	
	@Autowired
	@Qualifier("templateDao")
	private TemplateDao templateDao;
	
	@Autowired
	@Qualifier("companyDao")
	private CompanyDao companyDao;

	@Override
	public void delTemplate(String templateId) {
		// TODO Auto-generated method stub
		TemplateItem templateItem = templateDao.get(templateId);
		templateItem.setIsValid(0);
		templateDao.update(templateItem);
	}

	@Override
	public TemplateItem getTemplate(String templateId) {
		// TODO Auto-generated method stub
		return templateDao.get(templateId);
	}

	@Override
	public PageResult<TemplateItem> getTemplatePage(QueryCondition condition,TemplateItem item) {
		// TODO Auto-generated method stub
		PageResult<TemplateItem> page = new PageResult<TemplateItem>();
		page.setList(templateDao.pageList(condition,item));
		page.setTotal(templateDao.count(condition,item));
		return page;
	}

	@Override
	public Integer saveTemplate(TemplateItem templateItem) {
		// TODO Auto-generated method stub
		templateItem.setTemplateId(UUID.randomUUID().toString());
		templateDao.save(templateItem);
		return Constant.STATUS_SUSSESS;
	}

	@Override
	public Integer updateTemplate(TemplateItem templateItem) {
		// TODO Auto-generated method stub
		TemplateItem item = templateDao.get(templateItem.getTemplateId());
		BeanUtils.copyProperties(templateItem, item,new String[]{"templateId"});
		templateDao.update(item);
		return Constant.STATUS_SUSSESS;
	}

	@Override
	public Integer saveTempalteByCompany(String companyId, String templateId) {
		// TODO Auto-generated method stub
		TemplateItem item = templateDao.get(templateId);
		Company company = companyDao.get(companyId);
		company.setTemplateItem(item);
		companyDao.update(company);
		return Constant.STATUS_SUSSESS;
	}

}
